﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.Linq.Mapping;
using System.Text;
using SRD.Model.SRD.DTO;
using SRD.Model.SRD.Util;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Web.UI.WebControls;
using System.Configuration;

namespace SRD.Model.SRD.DAO
{
    class EmpresaDAO
    {
        DataClassesSRDDataContext bancoDados = new DataClassesSRDDataContext();
        
        public IQueryable findByName(string nomeEmpresa)
        {
            var resultado = from e in bancoDados.EMPRESAs
                            where e.NOME_FANTASIA.Contains(nomeEmpresa)
                            select e;
            return resultado;
            
        }

        public EMPRESA findByID(EMPRESA empresa)
        {
            var resultado = (from e in bancoDados.EMPRESAs
                             where e.EMPRESA_ID == empresa.EMPRESA_ID
                             select e).First();
                              
            return resultado;            
        }

        public IQueryable findAll() 
        {
            var resultado = from e in bancoDados.EMPRESAs
                            select e;
                              
            return resultado;            
        }


        public string insert(EMPRESA empresa)
        {            
            try
            {                                
                bancoDados.EMPRESAs.InsertOnSubmit(empresa);
                bancoDados.SubmitChanges();     
                return "Inclusão realizada com sucesso!";
            }
            catch (Exception o)
            {
                return "Houve erro na inclusão: " + o.Message;
            }
        }

        public string update(EMPRESA empresa)
        {
            try
            {
                var empresaExistente = (from e in bancoDados.EMPRESAs
                                        where e.EMPRESA_ID == empresa.EMPRESA_ID
                                        select e).First();
                empresaExistente.RASAO_SOCIAL = empresa.RASAO_SOCIAL;
                empresaExistente.NOME_FANTASIA = empresa.NOME_FANTASIA;
                empresaExistente.CNPJ = empresa.CNPJ;
                empresaExistente.CEP = empresa.CEP;
                empresaExistente.LOUGRADOURO = empresa.LOUGRADOURO;
                empresaExistente.NUMERO = empresa.NUMERO;
                empresaExistente.COMPLEMENTO = empresa.COMPLEMENTO;
                empresaExistente.BAIRRO = empresa.BAIRRO;
                empresaExistente.ESTADO = empresa.ESTADO;
                empresaExistente.CIDADE = empresa.CIDADE;
                empresaExistente.TELEFONE = empresa.TELEFONE;
                empresaExistente.FAX = empresa.FAX;
                empresaExistente.EMAIL = empresa.EMAIL;
                empresaExistente.END_SMTP = empresa.END_SMTP;
                empresaExistente.USER_SMTP = empresa.USER_SMTP;
                empresaExistente.SENHA_SMTP = empresa.SENHA_SMTP;
                bancoDados.SubmitChanges();
                return "Atualização realizada com sucesso!";
            }
            catch (Exception o)
            {
                return "Houve erro na atualização: " + o.Message;
            }            
        }

        public string delete(EMPRESA empresa)
        {
            try
            {
                var empresaExitente = (from e in bancoDados.EMPRESAs
                                       where e.EMPRESA_ID == empresa.EMPRESA_ID
                                       select e).First();
                EMPRESA emp = empresaExitente;
                bancoDados.EMPRESAs.DeleteOnSubmit(emp);
                bancoDados.SubmitChanges();
                return "Registro excluído com sucesso!";
            }
            catch (Exception o)
            {
                return "Houve erro ao excluir: " + o.Message;
            }           
        }
    }
}
